package com.xszx.serviceedu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xszx.serviceedu.entity.Course;
import com.xszx.serviceedu.entity.form.CourseInfoForm;
import com.xszx.serviceedu.entity.query.CourseQuery;
import com.xszx.serviceedu.entity.vo.CoursePublishVo;
import com.xszx.serviceedu.entity.vo.CourseQueryVo;
import com.xszx.serviceedu.entity.vo.CourseWebVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author 白熊
 * @since 2024-07-16
 */
public interface CourseService extends IService<Course> {
    /**
     * 保存课程和课程详情信息
     * @param courseInfoForm
     * @return 新生成的课程id
     */
    //返回添加的id,是为了前端假如回退回上一步,可以回显
    String saveCourseInfo(CourseInfoForm courseInfoForm);

    CourseInfoForm getCourseInfoFormById(String id);//根据id回显课程数据

    void updateCourseInfoById(CourseInfoForm courseInfoForm);//根据id修改课程详细信息

    CoursePublishVo getCoursePublishVoById(String id);//根据id查询课程信息部分

    void publishCourseById(String id);//根据id发布课程

    //mp自带的分页插件. 不需要返回值 都会封装进去
    void pageQuery(Page<Course> pageParam, CourseQuery courseQuery);//分页模糊查询课程信息

    void removeCourseById(String courseId);//根据课程id删除课程

    List<Course> indexList();

    List<Course> selectByTeacherId(String teacherId);//根据讲师id查询课程

    //分页模糊查询前台课程信息
    Map<String, Object> pageListWeb(Page<Course> pageParam, CourseQueryVo courseQuery);

    CourseWebVo selectInfoWebById(String id);//前台获取课程信息

    void updatePageViewCount(String id);//前台更新课程浏览量

}
